<?php
class ExperienciasController extends AppController {

	var $name = 'Experiencias';	
	var $helpers = array('Html', 'Form', 'Javascript', 'Ajax', 'Access');
	var $uses = array('Experiencia', 'Postulado', 'User');
	

	function index($usuario = null) {
	//	Verificacion de sesion del sistema		
		if(!$this->Access->getMy('username')){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'convocatorias','action' => 'publicaciones'));
		}
		$this->Experiencia->recursive = 0;
		$this->set('experiencias', $this->Experiencia->find('all', array('conditions'=>array('Experiencia.user_id'=>$usuario),'order'=>'Experiencia.fecha_ingreso DESC')));		
	}

	function view($id = null) {
	//	Verificacion de sesion del sistema		
		if(!$this->Access->getMy('username')){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'convocatorias','action' => 'publicaciones'));
		}
		if (!$id) {
			$this->Session->setFlash(__('Invalid experiencia', true));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('experiencia', $this->Experiencia->read(null, $id));
	}

	function add() {
	//	Verificacion de sesion del sistema		
		if(!$this->Access->getMy('username')){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'convocatorias','action' => 'publicaciones'));
		}
		if (!empty($this->data)) {
			//die(var_dump($this->data));
			if ($this->Experiencia->save($this->data)) {
				//Se traen las postulaciones del usuario registrado
				$postulados = $this->Postulado->find('list',array('conditions'=>array('Postulado.user_id'=>$this->Access->getMy('id'))));
				
				foreach ($postulados as $postulado):
										
					$experiencias = $this->Experiencia->find('list',array('conditions'=>array('Experiencia.user_id'=>$this->Access->getMy('id'))));
					$experiencia_total = 0;
					
					foreach ($experiencias as $experiencia):
						$experiencia_aux = $this->Experiencia->read(null,$experiencia);
						
						$tiempo_inicial = $experiencia_aux['Experiencia']['fecha_ingreso'];
						//Si el tiempo final es vacio, hay que sumar desde la fecha de ingreso hasta la fecha actual
						$tiempo_final = ($experiencia_aux['Experiencia']['fecha_retiro']=="0000-00-00")?date('Y'."-".'m'."-".'d'):$experiencia_aux['Experiencia']['fecha_retiro'];
								
						$anios=0;					
					
						//Si un anio es menor que el otro. 
						if(abs(substr($tiempo_final,0,4)-substr($tiempo_inicial,0,4))>0 && (substr($tiempo_inicial,5,2)==substr($tiempo_final,5,2))){							
							$anios = 12*abs(substr($tiempo_final,0,4)-substr($tiempo_inicial,0,4));
						}
						
						//var_dump("Anio");
						//die(var_dump($anios));
						
						
						$tiempo = $anios+abs(substr($tiempo_final,5,2)-substr($tiempo_inicial,5,2));
												
						$experiencia_total+=$tiempo;
					endforeach;					
					//Se actualiza la experiencia del postulado
					$this->User->id = $this->Access->getMy('id');
					//die(var_dump($experiencia_total));
					$this->User->saveField('experiencia_real',$experiencia_total);
				endforeach;				
			}
		}
		$this->set('experiencias', $this->Experiencia->find('all', array('conditions'=>array('Experiencia.user_id'=>$this->data['user_id']),'order'=>'Experiencia.fecha_ingreso DESC')));
		$this->set('user_id',$this->data['user_id']);
		$this->render('index', 'ajax');
	}

	function edit($id = null) {
	//	Verificacion de sesion del sistema		
		if(!$this->Access->getMy('username')){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'convocatorias','action' => 'publicaciones'));
		}
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Invalid experiencia', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			if ($this->Experiencia->save($this->data)){
				
				//Se traen las postulaciones del usuario registrado para calcular experiencia
				$postulados = $this->Postulado->find('list',array('conditions'=>array('Postulado.user_id'=>$this->Access->getMy('id'))));
				
				foreach ($postulados as $postulado):
					$this->Postulado->id = $postulado;
					$experiencias = $this->Experiencia->find('list',array('conditions'=>array('Experiencia.user_id'=>$this->Access->getMy('id'))));
					$experiencia_total = 0;
					foreach ($experiencias as $experiencia):
						$experiencia_aux = $this->Experiencia->read(null,$experiencia);
						$tiempo_inicial = $experiencia_aux['Experiencia']['fecha_ingreso'];
						//Si el tiempo final es vacio, hay que sumar desde la fecha de ingreso hasta la fecha actual
						$tiempo_final = ($experiencia_aux['Experiencia']['fecha_retiro']=="0000-00-00")?date('Y'."-".'m'."-".'d'):$experiencia_aux['Experiencia']['fecha_retiro'];
						$anios=0;
						//Si un anio es menor que el otro. 
						if(abs(substr($tiempo_final,0,4)-substr($tiempo_inicial,0,4))>0 && (substr($tiempo_inicial,5,2)<substr($tiempo_final,5,2))){
							$anios = 12*abs(substr($tiempo_final,0,4)-substr($tiempo_inicial,0,4));
						}
						
						$tiempo = $anios+abs(substr($tiempo_final,5,2)-substr($tiempo_inicial,5,2));						
						$experiencia_total+=$tiempo;
					endforeach;					
					//Se actualiza la experiencia del postulado
					$this->Postulado->saveField('experiencia_real',$experiencia_total);
				endforeach;
												
				$this->Session->setFlash(__('La experiencia ha sido guardada', true));
				
				$this->redirect(array('action' => 'index',$this->Access->getMy('id')));
			} else {
				$this->Session->setFlash(__('The experiencia could not be saved. Please, try again.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->Experiencia->read(null, $id);
		}
		$postulados = $this->Experiencia->Postulado->find('list');
		$users = $this->Experiencia->User->find('list');
		$this->set(compact('postulados', 'users'));
	}

	function delete($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Invalid id for experiencia', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->Experiencia->delete($id)) {
			
			//Se traen las postulaciones del usuario registrado
				$postulados = $this->Postulado->find('list',array('conditions'=>array('Postulado.documento'=>$this->Access->getMy('username'))));
				
				foreach ($postulados as $postulado):
					$this->Postulado->id = $postulado;
					$experiencias = $this->Experiencia->find('list',array('conditions'=>array('Experiencia.postulado_id'=>$this->Access->getMy('id'))));
					$experiencia_total = 0;
					foreach ($experiencias as $experiencia):
						$experiencia_aux = $this->Experiencia->read(null,$experiencia);
						$tiempo_inicial = $experiencia_aux['Experiencia']['fecha_ingreso'];
						//Si el tiempo final es vacio, hay que sumar desde la fecha de ingreso hasta la fecha actual
						$tiempo_final = ($experiencia_aux['Experiencia']['fecha_retiro']=="0000-00-00")?date('Y'."-".'m'."-".'d'):$experiencia_aux['Experiencia']['fecha_retiro'];
						$anios=0;
						//Si un anio es menor que el otro. 
						if(abs(substr($tiempo_final,0,4)-substr($tiempo_inicial,0,4))>0 && (substr($tiempo_inicial,5,2)<substr($tiempo_final,5,2))){
							$anios = 12*abs(substr($tiempo_final,0,4)-substr($tiempo_inicial,0,4));
						}
						
						$tiempo = $anios+abs(substr($tiempo_final,5,2)-substr($tiempo_inicial,5,2));						
						$experiencia_total+=$tiempo;
					endforeach;					
					//Se actualiza la experiencia del postulado
					$this->Postulado->saveField('experiencia_real',$experiencia_total);
				endforeach;
			
			$this->Session->setFlash(__('Experiencia Eliminada', true));			
			$this->redirect(array('action'=>'index',$this->Access->getMy('id')));
		}
		$this->Session->setFlash(__('Experiencia no eliminada', true));
		$this->redirect(array('action' => 'index',$this->Access->getMy('id')));
	}
}
?>